package com.physics.mps.entity.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author mcsoft
 * @since 2022/4/20
 * <p>
 * 状态码定义：6位
 * - 0：大模块（如用户模块）
 * - 00：大模块中的具体模块（如新增模块）
 * - 000：具体状态码
 * <p>
 * 状态码命名（大写)：
 * 大模块_具体模块_错误信息
 */
@Getter
@AllArgsConstructor
public enum CodeEnum {

    // ~ 用户模块

    // ~ 操作码
    // ========================================================================================================

    SUCCESS(0, "成功"),

    // ~ 系统模块
    FAILED(-1, "失败"),


    // ~ 系统错误
    SYSTEM_ERROR(100000, "系统错误"),

    AUTHENTICATION_ERROR(100001, "没有权限访问"),

    UPDATE_FILE_SIZE_LIMIT(100001, "上传文件大小超过限制（10m）"),

    PARAMS_ERROR(100400, "参数错误"),

    DATA_EXIST(100002, "数据已存在"),

    DOWNLOAD_EXCEPTION(100003, "下载异常"),

    UPLOAD_EXCEPTION(100004, "上传异常"),


    // 增删改查

    UPDATE_ERROR(100401, "编辑错误"),

    REMOVE_ERROR(100402, "删除错误"),

    CREATE_ERROR(100403, "新增错误"),

    // 登录部分 110

    LOGIN_TOKEN_ERROR(110000, "登录Token错误"),

    LOGIN_TOKEN_EXPIRED(110000, "登录Token已过期"),

    LOGIN_PARAMS_ERROR(110001, "登录参数错误"),

    LOGIN_TOKEN_NOT_EMPTY(110002, "登录Token不能为空"),

    LOGIN_ACCOUNT_ERROR(110005, "登录账号错误"),


    LOGIN_USERNAME_ERROR(110005, "登录用户名错误"),

    LOGIN_PASSWORD_ERROR(110006, "登录密码错误"),


    LOGIN_PASSWORD_NOT_EMPTY(110007, "密码不能为空"),

    LOGIN_RE_LOGIN_CODE(110008, "重新登录"),


    // 用户部分 120

    USER_IS_MAIN_NOT_EMPTY(120001, "是否主用户不能为空"),

    USER_MAIN_USER_ID_NOT_EMPTY(120002, "主账号ID不能为空"),

    USER_NOT_EXIST(120005, "用户不存在"),

    USER_EXIST(120005, "用户已存在"),

    USER_CHILD_NOT_CREATE(120003, "子账号不能创建用户"),

    USER_MAIN_HAS_CHILD(120004, "主账号下存在子账号"),

    USER_CAN_NOT_OPERA(120005, "用户没有权限操作"),

    USER_VOLUME_NOT_ENOUGH(120006, "用户空间不足"),

    USER_HAS_EQUIPMENT(120007, "用户存在已绑定的设备"),

    USER_STATUS_STOP(120008, "该用户已经停用"),

    USER_ADMIN_CAN_NOT_STOP(120008, "管理员不能被停用"),

    USER_ADMIN_CAN_NOT_DELETE(120008, "管理员不能被删除"),

    USER_ID_IS_BLANK(120009, "用户ID为空"),

    // ~ 任务 130

    TASK_ID_IS_BLANK(130001, "任务ID为空"),


    SUB_TASK_NOT_EXIST(130101, "子任务不存在"),

    TASK_NAME_NOT_NULL(130102, "任务名称不能为空"),

    TASK_FILE_UPLOAD_FAILED(130103, "任务文件上传失败"),

    TASK_PIC_UPLOAD_FAILED(130104, "结果图片上传失败"),

    TASK_JSON_UPLOAD_FAILED(130105, "结果json上传失败"),


    // ~ Abaqus 部分 140

    FILE_NAME_NULL(140001, "文件名为空"),

    FILE_PATH_NULL(140002, "文件路径为空"),

    ABAQUS_COMPUTE_PARAM_NOT_SET(140003, "Abaqus计算参数未设置"),

    CAE_PATH_NOT_SET(140004, "CAE目录未设置"),

    STP_PATH_NOT_SET(140005, "STP路径未设置"),

    STP_FILE_NOT_EXIST(140005, "STP文件不存在"),

    STL_FILE_NOT_EXIST(140005, "STL文件不存在"),

    RESULT_FILE_NOT_EXIST(140005, "结果文件不存在"),

    GLTF_OUTPUT_NOT_EXIST(140006, "GLTF输出文件不存在"),

    HEAT_TRANSFER_PART_IS_NULL(140006, "热传导Part参数未设置"),

    STP_CONVERT_TO_STL_FAILED(140007, "stp转换stl失败"),

    STL_CONVERT_TO_GLTF_FAILED(140008, "stl转换gltf失败"),

    STP_CONVERT_TO_GLTF_FAILED(140009, "stp转换gltf失败"),

    FILE_RENAME_FAILED(140009, "文件重命名失败"),

    FILE_IS_NULL(140010, "文件为空"),

    FILE_READ_FAILED(140011, "文件读取错误"),

    METHOD_INVOCATION_FAILED(140012, "反射转换json错误"),

    METHOD_INVOCATION_CREATE_COMMAND_FAILED(140013, "反射创建命令错误"),

    DATA_TYPE_ERROR(140014, "数据类型错误"),

    DATA_OUT_OF_ORDER(140015, "数据乱序，需从小到大排列"),

    DATA_DOMAIN_ERROR(140016, "时域值的数量必须是域级并行化的处理器数量的倍数"),

    DATA_NOT_EXIST(140017, "数据为空"),

    FILE_WRITE_FAILED(140015, "文件写入错误"),

    INITIAL_INCREMENT_TIME_PERIOD_ERROR(140016, "初始增量步必须小于等于总时间"),

    LIST_NULL(140017, "列表为空"),

    PART_LACK(140018, "部分部件未赋予材料属性"),

    SPACECLAIM_LACK(140019, "spaceclaim参数缺失"),

    SPACECLAIM_ERROR(140020, "前处理失败"),

    ANSYS_ERROR(140021, "Ansys计算失败"),


    PARAM_APP_ID_NOT_EMPTY(150001, "appId不能为空"),

    PARAM_MODULE_ID_NOT_EMPTY(150002, "moduleId不能为空"),

    LOG_FILE_NOT_EXIST(150003, ".log文件未生成"),

    FAILED_TO_GENERATE_RESULTS(150004, "结果生成失败"),

    COMPUTE_PIC_FILE_NOT_EXIST(150005, "结果文件不存在"),

    SUBTASK_NOT_NULL(150006, "SubTaskEntity不能为空"),

    STP_FILE_OR_PARAM_ERROR(150007, "STP文件损坏或参数有误"),



    // ~ 其他模块
    // ~ 230xxx
    // ========================================================================================================

    JUNIT_RESPONSE_NOT_SUCCESS(230001, "单元测试返回结果不成功"),
    APP_ID_NOT_EXIST(230001, "AppId不存在");


    // ~ 变量
    // ========================================================================================================

    /**
     * 状态码
     */
    private final int code;

    /**
     * 状态信息
     */
    private final String message;


}
